package com.chenfan.ccp.plug.business.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @author liuming
 * @date 2021/9/27
 */
@Data
public class ActionLog implements Serializable {

    /**
     * 业务类型, 如: 采购订单
     */
    private String bizType;
    @NotNull(message = "业务主标识不能为空")
    private String bizNo;

    /**
     * 操作名称,具体的操作 如: 修改订单
     */
    @NotNull(message = "操作名称不能为空")
    private String actionName;

    /**
     * 操作时间
     */
    @NotNull(message = "操作时间不能为空")
    private Date operationTime;

    /**
     * 具体的操作行为
     */
    @NotEmpty(message = "操作不能为空")
    private List<ActionData> actionList;

    /**
     * 业务备用字段1
     */
    private String reserve1;
    /**
     * 业务备用字段2
     */
    private String reserve2;


    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public static class ActionData {
        /**
         * 字段描述
         */
        @NotNull(message = "字段描述不能为空")
        private Object fieldName;
        /**
         * 原始值
         */
        private Object beforeValue;
        /**
         * 现在的值
         */
        private Object afterValue;
        /**
         * 被代码字典替换后的值
         */
        private Object surfaceAfterValue;
        private String fieldType;
        private String subBizNo;
        /**
         * 数据字典关系
         */
        private Map<String, String> dictionary;
    }

}
